package dao;

import java.io.Serializable;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import modelo.Combobebidaxsalon;
import modelo.Detallecombobebida;
import modelo.DetallecombobebidaId;
import modelo.Combobebida;
import modelo.Bebida;

import org.hibernate.Criteria;
import org.hibernate.FetchMode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;

import util.HibernateUtil;

public class DetalleComboBebidaDao implements Serializable{

	
	/**
	 * 
	 */
	private static final long serialVersionUID = 2276046849509919985L;
	private Session session;
	SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
	
	public DetalleComboBebidaDao() {
		super();
	}
	
	public List<Detallecombobebida> obtenerDetallecombobebida(int idCombobebida) {
		session=sessionFactory.openSession();

//			Query query = session.createQuery("SELECT s FROM Detallecombobebida s");
		Criteria cr = session.createCriteria(Detallecombobebida.class);
		cr.add(Restrictions.eq("combobebida.idCombobebida", idCombobebida));
		List<Detallecombobebida> ca= cr.list();
		session.close();

		return ca;
		}
	
//	public List<Combobebidaxsalon> obtenerComboBebidaXSalon() {
//	
//	session=sessionFactory.openSession();
//	Criteria crit = session.createCriteria(Combobebidaxsalon.class)
//			.createAlias("salon", "Salon")
//			.setFetchMode("salon", FetchMode.JOIN)
//			.createAlias("combo", "Combobebida")
//			.setFetchMode("combo", FetchMode.JOIN);
//
//	List<Combobebidaxsalon> ca= crit.list();
//	
//	session.close();
//	return ca;
//}

	
	
	public void guardarDetalleComboBebida(Combobebida cb, Bebida b,int c) {
		session = sessionFactory.openSession();
		session.beginTransaction();

		try {
			Query query = session
					.createSQLQuery("INSERT INTO detallecombobebida (idComboBebida, idBebida, cantidad) VALUES (:valor1, :valor2, :valor3)");

			query.setParameter("valor1", cb.getIdComboBebida());
			query.setParameter("valor2", b.getIdBebida());
			query.setParameter("valor3", c);
			query.executeUpdate();

			session.getTransaction().commit();

		} catch (Exception e) {
			session.getTransaction().rollback();
		} finally {
			session.close();
		}

	}
	
//public void guardarComboBebidaXSalon(Combobebidaxsalon cbxs) throws Exception {
//		
//		Combobebida combobebida = new Combobebida();
//		Salon salon =  new Salon();
//		salon.setIdSalon(3);
//		combobebida.setIdComboBebida(3);
//        cbxs.setSalon(salon);
//        cbxs.setCombobebida(combobebida);
//        cbxs.setPrecio(cbxs.getPrecio());
//		
//		Transaction transaction = null;
//
//		try{
//			
//		session = sessionFactory.openSession();
//        transaction=session.beginTransaction();			
//        // Registra Menu
//        session.save(cbxs);
//        
//        // Recupera el last_id de Menu
//        Long lastId = ((BigInteger) session.createSQLQuery(
//				"SELECT LAST_INSERT_ID()").uniqueResult()).longValue();
//
//		int anInt = new BigDecimal(lastId).intValueExact();
//		
////		//Registra la lista de detalles de menu
////        for(Detallemenu i: listDetalle){
////        	detallemenuid.setIdMenu(anInt);
////        	detallemenuid.setIdInsumo(i.getInsumo().getIdInsumo());
////            i.setId(detallemenuid);
////            session.save(i);
////            detallemenuid = new DetallemenuId();
////        }
//		
//		transaction.commit();
//	
//		                
//        } catch (Exception e1) {
//            //Error
//            if (transaction != null) {
//                transaction.rollback();
//                throw e1;
//              }
//        } finally { 
//            session.close();
//        }
//		
//	
//		}

}
